// 封装分类相关的业务代码。相当于hooks
import { onMounted, ref } from "vue";
import { getCategoryAPI } from "@/apis/category";
import { useRoute, onBeforeRouteUpdate } from "vue-router";

// 自定义hooks
export function useCategory() {
  let categoryData = ref({});
  // param传递参数
  const route = useRoute();

  const getCategory = async (id = route.params.id) => {
    const res = await getCategoryAPI(id);
    categoryData.value = res.result;
  };

  //  像这种生命周期钩子函数，是对应组件的，也就是说你虽然js代码执行了，但是onMounted的执行时机是组件挂载完毕
  onMounted(() => {
    getCategory();
  });

  // 目标：路由参数变化时候，可以吧分类数据接口重新发送
  onBeforeRouteUpdate((to) => {
    //重新发送，存在一个小问题，因为需要使用到最新的理由参数，发送最新的请求
    getCategory(to.params.id);
    // console.log(to);// to是目标路由
  });

  return {
    categoryData,
  };
}
